/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package SYSGEST.br.fornecedor;

import sysgest.conexao.HibernateUtil;
import SYSGEST.br.Funcionario.Funcionario;
import java.util.List;
import javassist.bytecode.stackmap.BasicBlock;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import sun.nio.cs.ext.MacThai;

/**
 *
 * @author AELSON
 */
public class FornecedorDAO {

    private Session sessao;
    private Transaction transacao;

    //metodo salvar fornecedor
    public void salvar(Fornecedor fornecedor) {
        sessao = HibernateUtil.getSessionFactory().openSession();
        transacao = sessao.beginTransaction();
        sessao.save(fornecedor);
        transacao.commit();
        sessao.close();
    }

    public void alterar(Fornecedor fornecedor) {
        sessao = HibernateUtil.getSessionFactory().openSession();
        transacao = sessao.beginTransaction();
        sessao.update(fornecedor);
        transacao.commit();
        sessao.close();
    }

    public void excluir(Fornecedor fornecedor) {
        sessao = HibernateUtil.getSessionFactory().openSession();
        transacao = sessao.beginTransaction();
        sessao.delete(fornecedor);
        transacao.commit();
        sessao.close();
    }

    public Fornecedor pesquisaCNPJ(String cnpj) {
        sessao = HibernateUtil.getSessionFactory().openSession();
        transacao = sessao.beginTransaction();
        Fornecedor fornecedor
                = (Fornecedor) sessao.createCriteria(Fornecedor.class).add(Restrictions.eq("CNPJ", cnpj)).uniqueResult();
        return fornecedor;
    }

    public List<Fornecedor> buscarCnpj(String cnpj) {
        sessao = HibernateUtil.getSessionFactory().openSession();
        transacao = sessao.beginTransaction();
        List<Fornecedor> fornecedor = sessao.createCriteria(Fornecedor.class).
                add(Restrictions.like("CNPJ", cnpj, MatchMode.ANYWHERE))
                .addOrder(Order.asc("CNPJ")).list();
        return fornecedor;
    }

    public List<Fornecedor> pesquisarNome(String nome) {
        sessao = HibernateUtil.getSessionFactory().openSession();
        transacao = sessao.beginTransaction();
        List<Fornecedor> fornecedor = sessao.createCriteria(Fornecedor.class).
                add(Restrictions.like("Razao", nome, MatchMode.ANYWHERE))
                .addOrder(Order.asc("Razao")).list();
        return fornecedor;
    }

    public List<Fornecedor> listar() {
        sessao = HibernateUtil.getSessionFactory()
                .openSession();
        transacao = sessao.beginTransaction();
        Criteria criteria = sessao.createCriteria(Fornecedor.class);
        List<Fornecedor> fornecedores = criteria.list();
        return fornecedores;
    }

    public Fornecedor pesquisacodigo(int codigo) {
        sessao = HibernateUtil.getSessionFactory().openSession();
        transacao = sessao.beginTransaction();

        Fornecedor fornecedores
                = (Fornecedor) sessao.createCriteria(Fornecedor.class).
                add(Restrictions.eq("Codigo", codigo)).
                uniqueResult();
        sessao.close();
        return fornecedores;

    }
}
